// 1.引入express框架
const express = require('express')
// 内置的模块, fs 读写模块
const fs = require('fs')
// 2.创建路由对象
const router = express.Router()
// 引入json数据
const data = require('../data/db.js')

// console.log(data.menus)

// 3.创建路由规则
// 获取树形表格属性
router.get('/getTreeTableList', (req, res) => {
  res.send({
    status: 200,
    message: "获取成功",
    data: data.menus
  })
})


// 添加功能
router.post('/addTreeTableData', (req, res) => {
  // 接受客户端post方式提交的参数
  let treeTableData = req.body

  // 添加文章到内存中的数据  让新增的数据处于第一行
  data.menus.push(treeTableData)

  // 构造要写入文件的数据结构  db.js
  const dataToWrite = {
    users: data.users,
    roles: data.roles,
    children: data.children,
    rights: data.rights,
    categories: data.categories,
    regions: data.regions,
    news: data.news,
    menus: data.menus
  }

  // 将更新后的数据写回 db.js 文件
  // 注意：需要使用正确的路径，并且保持 module.exports 格式
  const fileContent = `module.exports = ${JSON.stringify(dataToWrite, null, 2)}`

  fs.writeFile('./data/db.js', fileContent, (err) => {
    if (err) {
      console.error(err)
      res.status(500).send({
        status: 500,
        message: "添加失败"
      })
    } else {
      res.send({
        status: 200,
        message: "添加成功",
        data: treeTableData
      })
    }
  })
})


// 删除
router.delete('/delTreeTableById/:id', (req, res) => {
  let { id } = req.params
  // 从内存中删除指定文章
  data.menus = data.menus.filter(item => item.id != id)
  // 构造要写入文件的数据结构
  const dataToWrite = {
    users: data.users,
    roles: data.roles,
    children: data.children,
    rights: data.rights,
    categories: data.categories,
    regions: data.regions,
    news: data.news,
    menus: data.menus
  }
  // 将更新后的数据写回 db.js 文件
  const fileContent = `module.exports = ${JSON.stringify(dataToWrite, null, 2)}`

  fs.writeFile('./data/db.js', fileContent, (err) => {
    if (err) {
      console.error(err)
      res.status(500).send({
        status: 500,
        message: "删除失败"
      })
    } else {
      res.send({
        status: 200,
        message: "删除成功",
        data: id
      })
    }
  })

})

// 更新文章
router.patch('/updateTreeTable/:id', (req, res) => {
  let { id } = req.params  // 文章id
  let updateData = req.body // 获取客户端发送的form表单新数据
  console.log('更新菜单ID:', id)
  console.log('更新菜单:', updateData)

  // 在内存中查找并更新文章  根据id查看当前文章的索引
  let treeTableIndex = data.menus.findIndex(item => item.id == id)

  if (treeTableIndex !== -1) {  // 
    // 更新文章数据
    data.menus[treeTableIndex] = {
      ...data.menus[treeTableIndex],
      ...updateData
    }

    // 构造要写入文件的数据结构
    const dataToWrite = {
      users: data.users,
      roles: data.roles,
      children: data.children,
      rights: data.rights,
      categories: data.categories,
      regions: data.regions,
      news: data.news,
      menus: data.menus
    }

    // 将更新后的数据写回 db.js 文件
    const fileContent = `module.exports = ${JSON.stringify(dataToWrite, null, 2)}`

    fs.writeFile('./data/db.js', fileContent, (err) => {
      if (err) {
        console.error(err)
        res.status(500).send({
          status: 500,
          message: "更新失败"
        })
      } else {
        res.send({
          status: 200,
          message: "更新成功",
          data: data.news[treeTableIndex]
        })
      }
    })
  } else {
    res.status(404).send({
      status: 404,
      message: "菜单未找到"
    })
  }
})


// 暴露路由对象
module.exports = router
